剑指 offer 字符串算法题:字符串的空格替换

您所在的位置:网站首页 剑指offer python pdf 下载 剑指 offer 字符串算法题:字符串的空格替换

剑指 offer 字符串算法题:字符串的空格替换

2023-07-08 11:43| 来源: 网络整理| 查看: 265

题目描述:实现一个replaceSpace函数,替换给定字符串中的空格为“%20”。例如,当字符串为’We Are Happy’.则经过替换之后的字符串为’We%20Are%20Happy’。

分析:对于一个字符串,空格可能出现在开头,末尾,或者不含空格的子串之间,最直观的方法是遍历字符串,遇到空格即替换,由于字符串在JavaScript中属于不可变,需使用新字符串进行连接操作。

正则表达式方法:str.replace(pattern, replaceStr)

数组map方法:1. 原字符串变成数组  2. map数组替换空格  3. 替换后数组变成字符串

双指针算法:1. 遍历原字符串计算出替换后的字符串长度,并生成该长度数组newStrArr 2. 两个指针:i指向原字符串, j指向新字符串 3. str[i] 非空格即将str[i++]放入newStrArr[j++]; str[i]是空格,将’%20’三个字符依次放入newStrArr[j++] 4. 数组变成字符串newStrArr.join('')。从过程看,方法和数组map类似。

求解:

// 正则表达式 function replaceSpace1(s: string): string { return s.replace(/ /g /* new RegExp(' ', 'g') */, '%20'); } // 暴力法 function replaceSpace2(s: string): string { let res = ''; let len = s.length; for (let i = 0; i < len; i++) { res += s[i] === ' ' ? '%20' : s[i]; } return res; } // split + map + join function replaceSpace3(s: string): string { return s .split('') .map((item) => { return item === ' ' ? '%20' : item; }) .join(''); }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3